bitkeeper revision 1.1295 (425eab1cIikVxIVyd1yoZpti7rBCLA)
authorvh249@arcadians.cl.cam.ac.uk <vh249@arcadians.cl.cam.ac.uk>
Thu, 14 Apr 2005 17:40:44 +0000 (17:40 +0000)
committervh249@arcadians.cl.cam.ac.uk <vh249@arcadians.cl.cam.ac.uk>
Thu, 14 Apr 2005 17:40:44 +0000 (17:40 +0000)
fix return with the lock held

Signed-off-by: Reiner Sailer <sailer@us.ibm.com>
Signed-off-by: Vincent Hanquez <vincent@xensource.com>
xen/common/grant_table.c

index c12439a524dde206ccceafee44cb7843c0a084eb..11258a488855b56aa70ee531381e3b853ed8fe96 100644 (file)
@@ -804,18 +804,19 @@ do_grant_table_op(
 
     LOCK_BIGLOCK(current->domain);
 
+    rc = -EFAULT;
     switch ( cmd )
     {
     case GNTTABOP_map_grant_ref:
         if ( unlikely(!array_access_ok(
             VERIFY_WRITE, uop, count, sizeof(gnttab_map_grant_ref_t))) )
-            return -EFAULT;
+            goto out;
         rc = gnttab_map_grant_ref((gnttab_map_grant_ref_t *)uop, count);
         break;
     case GNTTABOP_unmap_grant_ref:
         if ( unlikely(!array_access_ok(
             VERIFY_WRITE, uop, count, sizeof(gnttab_unmap_grant_ref_t))) )
-            return -EFAULT;
+            goto out;
         rc = gnttab_unmap_grant_ref((gnttab_unmap_grant_ref_t *)uop, count);
         break;
     case GNTTABOP_setup_table:
@@ -831,6 +832,7 @@ do_grant_table_op(
         break;
     }
 
+out:
     UNLOCK_BIGLOCK(current->domain);
 
     return rc;